package com.ibeeking.gmc.global.g.rest.service;

import com.ibeeking.found.common.entity.open.OpenConfigDTO;
import com.ibeeking.found.common.entity.open.OpenConfigQuery;
import com.ibeeking.gmc.global.service.common.param.OpenConfigParam;
import com.ibeeking.gmc.global.service.common.query.OpenConfigPageQuery;
import com.ibeeking.gmc.global.service.common.vo.OpenConfigVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ibeeking.gmc.global.service.common.vo.WxOpenMaStandardTemplateVO;
import com.ibeeking.gmc.global.service.common.vo.WxOpenMaTemplateDraftVO;
import com.ibeeking.gmc.global.service.common.vo.WxOpenMaGeneralTemplateVO;
import me.chanjar.weixin.open.api.WxOpenService;

import java.util.List;
import java.util.Map;

/**
 * @ClassName IOpenConfigService
 * @Description
 * @Author ibeeking
 * @Date 2021-06-16 16:06
 **/
public interface IOpenConfigService {
    /**
     * 查询第三方平台公众号配置信息
     *
     * @param query
     * @return
     */
    Page<OpenConfigVO> pageList(OpenConfigPageQuery query);
    /**
     * 查询在第三方平台配置的信息
     *
     * @param query
     * @return
     */
    List<OpenConfigVO> list(OpenConfigQuery query);
    /**
     * 查询在第三方平台配置的信息
     *
     * @param query
     * @return
     */
    List<OpenConfigDTO> queryOpenConfigList(OpenConfigQuery query);


    /**
     * 查询第三方平台公众号配置信息
     * @param query
     * @return
     */
    OpenConfigDTO queryOpenConfigOne(OpenConfigQuery query);

    /**
     * 获取开放平台服务并将注册为bean
     *
     * @param
     * @return
     */
    WxOpenService getWxOpenService();

    /**
     * 查询发布微信小程序的模板清单
     *
     * @return
     */
    List<WxOpenMaTemplateDraftVO> getWxOpenMaTemplateDraftList(String configId);

    /**
     * 查询发布微信小程序的模板清单
     *
     * @return
     */
    List<WxOpenMaGeneralTemplateVO> getWxOpenMaGeneralTemplateList(String configId);

    /**
     * 查询发布微信小程序的模板清单
     *
     * @return
     */
    List<WxOpenMaStandardTemplateVO> getWxOpenMaStandardTemplateList(String configId);
    /**
     * 根据id查看详情
     *
     * @param id
     * @return
     */
    OpenConfigVO view(Long id);
    /**
     * 添加微信开放平台第三方平台配置列表
     *
     * @param openConfigParam 开放平台的配置参数
     * @return
     */
    Boolean add(OpenConfigParam openConfigParam);

    /**
     * 更新微信开放平台第三方平台配置列表
     *
     * @param openConfigParam 开放平台的配置参数
     * @return
     */
    Boolean modify(OpenConfigParam openConfigParam);

    /**
     * 更新微信开放平台第三方平台配置状态
     *
     * @param id 配置ID
     * @param status 状态值
     * @param modifyBy 修改人
     * @return
     */
    Boolean changeStatus(Long id, Integer status, Long modifyBy);
    /**
     * 根据id删除第三方平台配置列表
     *
     * @param id
     * @return
     */
    Boolean del(Long id);
    /**
     * 根据配置平台类型列表
     *
     * @param
     * @return
     */
     List<Map<String, Object>> queryOpenApiTypeList();
    /**
     * 根据配置平台类型列表
     *
     * @param
     * @return
     */
    List<Map<String, Object>> queryOpenApiSubTypeList(Integer type);
}
